package com.ruoyi.temu.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.temu.domain.TemuSku;
import com.ruoyi.temu.mapper.TemuSpuMapper;
import com.ruoyi.temu.domain.TemuSpu;
import com.ruoyi.temu.service.ITemuSpuService;

/**
 * spuService业务层处理
 * 
 * @author ruoyi
 * @date 2023-09-03
 */
@Service
public class TemuSpuServiceImpl implements ITemuSpuService 
{
    @Autowired
    private TemuSpuMapper temuSpuMapper;

    /**
     * 查询spu
     * 
     * @param spuId spu主键
     * @return spu
     */
    @Override
    public TemuSpu selectTemuSpuBySpuId(Long spuId)
    {
        return temuSpuMapper.selectTemuSpuBySpuId(spuId);
    }

    /**
     * 查询spu列表
     * 
     * @param temuSpu spu
     * @return spu
     */
    @Override
    public List<TemuSpu> selectTemuSpuList(TemuSpu temuSpu)
    {
        return temuSpuMapper.selectTemuSpuList(temuSpu);
    }

    /**
     * 新增spu
     * 
     * @param temuSpu spu
     * @return 结果
     */
    @Transactional
    @Override
    public int insertTemuSpu(TemuSpu temuSpu)
    {
        int rows = temuSpuMapper.insertTemuSpu(temuSpu);
        insertTemuSku(temuSpu);
        return rows;
    }

    /**
     * 修改spu
     * 
     * @param temuSpu spu
     * @return 结果
     */
    @Transactional
    @Override
    public int updateTemuSpu(TemuSpu temuSpu)
    {
        temuSpuMapper.deleteTemuSkuBySpuId(temuSpu.getSpuId());
        insertTemuSku(temuSpu);
        return temuSpuMapper.updateTemuSpu(temuSpu);
    }

    /**
     * 批量删除spu
     * 
     * @param spuIds 需要删除的spu主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteTemuSpuBySpuIds(Long[] spuIds)
    {
        temuSpuMapper.deleteTemuSkuBySpuIds(spuIds);
        return temuSpuMapper.deleteTemuSpuBySpuIds(spuIds);
    }

    /**
     * 删除spu信息
     * 
     * @param spuId spu主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteTemuSpuBySpuId(Long spuId)
    {
        temuSpuMapper.deleteTemuSkuBySpuId(spuId);
        return temuSpuMapper.deleteTemuSpuBySpuId(spuId);
    }

    /**
     * 新增sku信息
     * 
     * @param temuSpu spu对象
     */
    public void insertTemuSku(TemuSpu temuSpu)
    {
        List<TemuSku> temuSkuList = temuSpu.getTemuSkuList();
        Long spuId = temuSpu.getSpuId();
        if (StringUtils.isNotNull(temuSkuList))
        {
            List<TemuSku> list = new ArrayList<TemuSku>();
            for (TemuSku temuSku : temuSkuList)
            {
                temuSku.setSpuId(spuId);
                list.add(temuSku);
            }
            if (list.size() > 0)
            {
                temuSpuMapper.batchTemuSku(list);
            }
        }
    }
}
